package com.limao.Tool;

import java.io.IOException;
import java.util.TimerTask;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import com.alibaba.fastjson.JSON;
import com.limao.Model.PublicData;

public class TaskOneForVrAutoTrade_new  extends TimerTask{

	static long userid=12170000000l;
	static long test_reg=0;
	static long test_reg_fai=0;
	
	static long test_auth=0;
	static long test_auth_fai=0;
	
	static long test_trade_auth=0;
	static long test_trade_auth_fai=0;
	
	static long test_buy=0;
	static long test_buy_fai=0;
	
	static long test_trade_userinfo=0;
	static long test_trade_userinfo_fai=0;
	
	static long test_in=0;
	static long test_in_fai=0;
	
	static long test_trade_buy=0;
	static long test_trade_buy_fai=0;
	
	static long test_out=0;
	static long test_out_fai=0;
	
	public TaskOneForVrAutoTrade_new(){
		
	}
	
	@Override
	public void run() {
		
		if(CacheClass.istrade)
		{
			for(int i=0;i<10;i++)  //建10个线程，模拟用户
			{
				if(!CacheClass.istrade) break;
				userid=userid+1;
				final String tmpmobile=userid+"";
				new Thread(new Runnable(){
					public void run(){
						DefaultHttpClient httpClient = new DefaultHttpClient();
						String log=test(httpClient,tmpmobile);
						log=log+"-------结束测试     测试成功： "+tmpmobile+"-------\r\n";
						System.out.println(log);
						log=null;
						httpClient.close();

					}
	
				}).start();
				
				try {
					Thread.sleep(1*500);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			
		}
		
	}
	
	
	public  void TradeTest(String mobile)
	{
		DefaultHttpClient httpClient = new DefaultHttpClient();
		String log=test(httpClient,mobile);
		log=log+"-------结束测试     测试成功： "+mobile+"-------\r\n";
		System.out.println(log);
		log=null;
		httpClient.close();
		
	}
	
	
	public static void setStartUserid(String mobile)
	{
		long l=CacheClass.getLongValue(mobile);
		if(l>0)
			userid=l;
	}
	
	
	private  String test(DefaultHttpClient httpClient,String mobile)
	{
		String log="--------- 开始测试,,,  "+mobile+"-------------\r\n";
		if(!CacheClass.istrade)
		{
			return log=log+"外部 强行停止\r\n";
		}
		//注册
		test_reg++;
		String url="https://test1.91limao.com/LoginServlet";
		PublicData data=new PublicData();
		data.m="14";
		data.mobile=mobile;
		data.password="E10ADC3949BA59ABBE56E057F20F883E";
		String jsonParam=JSON.toJSONString(data);
		
		String str=send(httpClient,url,jsonParam);
		
        if(CacheClass.isEmpty(str)) {
        	test_reg_fai++;
        	log=log+"商城交易服  注册失败。   失败次数：总次数="+test_reg_fai+":"+test_reg+"\r\n";
        	CacheClass.istrade=false;
        	log=log+"--- 自动结束  ---\r\n";
        	return log;
        }
        /**把json字符串转换成json对象**/
        System.out.println(str);
        PublicData df= JSON.parseObject(str,PublicData.class);
        str=null;
        if(CacheClass.getIntValue(df.state)==0)
        {
        	test_reg_fai++;
        	log=log+"商城交易服  注册失败。 "+df.info+"  失败次数：总次数="+test_reg_fai+":"+test_reg+"\r\n";
        	CacheClass.istrade=false;
        	log=log+"--- 自动结束  ---\r\n";
        	return log;
        }
        log=log+"商城交易服  注册成功。  失败次数：总次数="+test_reg_fai+":"+test_reg+"\r\n";
        
        
		if(!CacheClass.istrade)
		{
			return log=log+"外部 强行停止\r\n";
		}
        //登陆商城
        test_auth++;
        String userid=null;
        String account=null;
        String pwd=null;

        
        url="https://test1.91limao.com/LoginServlet";
		data=new PublicData();
		data.m="64";
		data.mobile=mobile;
		data.password="E10ADC3949BA59ABBE56E057F20F883E";
		data.platform="0";
		jsonParam=JSON.toJSONString(data);
		str=send(httpClient,url,jsonParam);
		if(CacheClass.isEmpty(str))
		{ 
			test_auth_fai++;
        	log=log+"登陆商城    失败。   失败次数：总次数="+test_auth_fai+":"+test_auth+"\r\n";
        	CacheClass.istrade=false;
        	log=log+"--- 自动结束  ---\r\n";
			return log;
		}
		System.out.println(str);
		df= JSON.parseObject(str,PublicData.class);
		str=null;
        if(CacheClass.getIntValue(df.state)==0)
        {
        	test_auth_fai++;
        	log=log+"登陆商城    失败。"+df.info+"   失败次数：总次数="+test_auth_fai+":"+test_auth+"\r\n";
        	CacheClass.istrade=false;
        	log=log+"--- 自动结束  ---\r\n";
        	return log;
        }
        else
        {
        	userid=df.userid;
        	account=df.account;
        	pwd=df.pwd;
        }
        log=log+"登陆商城    成功。   失败次数：总次数="+test_auth_fai+":"+test_auth+"\r\n";

        
		if(!CacheClass.istrade)
		{
			return log=log+"外部 强行停止\r\n";
		}
		//商城购物
        
        test_buy++;
        url="https://test1.91limao.com/PlugServlet";
		data=new PublicData();
		data.m="1720";
		data.projectid="107";
		data.selectextra="";
		data.num="1000";
		data.about="";
		data.paytype="3";
		data.apptype="0";
		data.address="北京北京市五三球场上越南战争_张三_"+mobile;
		data.shengid="110000";
		data.cityid="110100";

		jsonParam=JSON.toJSONString(data);
		str=send(httpClient,url,jsonParam);
		if(CacheClass.isEmpty(str)){
			test_buy_fai++;
			log=log+"商城购物    失败。   失败次数：总次数="+test_buy_fai+":"+test_buy+"\r\n";
			CacheClass.istrade=false;
			log=log+"--- 自动结束  ---\r\n";
			return log;
		}
		System.out.println(str);
		df= JSON.parseObject(str,PublicData.class);
		str=null;
        if(CacheClass.getIntValue(df.state)==0)
        {
        	test_buy_fai++;
			log=log+"商城购物    失败。"+df.info+"   失败次数：总次数="+test_buy_fai+":"+test_buy+"\r\n";
			CacheClass.istrade=false;
			log=log+"--- 自动结束  ---\r\n";
        	return log;
        }
        log=log+"商城购物    成功。   失败次数：总次数="+test_buy_fai+":"+test_buy+"\r\n";
        
		try {
			Thread.sleep(5*1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		
		if(!CacheClass.istrade)
		{
			return log=log+"外部 强行停止";
		}
        //登陆交易服
		
		test_trade_auth++;
		
        url="https://test1.91limao.com/cgi-bin/zl_cgi?c=5";
        url=url+"&account="+account+"&pwd="+pwd;
        str=send_get(httpClient,url);
        if(CacheClass.isEmpty(str)) {
        	test_trade_auth_fai++;
			log=log+"登陆交易服    失败。   失败次数：总次数="+test_trade_auth_fai+":"+test_trade_auth+"\r\n";
			CacheClass.istrade=false;
			log=log+"--- 自动结束  ---\r\n";
        	return log;
        }
		df= JSON.parseObject(str,PublicData.class);
		str=null;
        if(CacheClass.getIntValue(df.retcode)!=0)
        {
        	test_trade_auth_fai++;
			log=log+"登陆交易服    失败   retcode="+df.retcode+"。   失败次数：总次数="+test_trade_auth_fai+":"+test_trade_auth+"\r\n";
			CacheClass.istrade=false;
			log=log+"--- 自动结束  ---\r\n";
			return log;
        }
        log=log+"登陆交易服    成功。   失败次数：总次数="+test_trade_auth_fai+":"+test_trade_auth+"\r\n";
        
 /*       
       
        //取交易服用户资产
        
		test_trade_userinfo++;
		
        url="https://test1.91limao.com/cgi-bin/zl_cgi?c=8";
        str=send_get(httpClient,url);
        if(CacheClass.isEmpty(str)) {
        	test_trade_userinfo_fai++;
			log=log+"取交易服用户资产    失败。   失败次数：总次数="+test_trade_userinfo_fai+":"+test_trade_userinfo+"\r\n";
        	return log;
        }
		df= JSON.parseObject(str,PublicData.class);
		str=null;
        if(CacheClass.getIntValue(df.retcode)!=0)
        {
        	test_trade_auth_fai++;
			log=log+"取交易服用户资产    失败   retcode="+df.retcode+"。   失败次数：总次数="+test_trade_userinfo_fai+":"+test_trade_userinfo+"\r\n";
        	return log;
        }
        log=log+"取交易服用户资产    成功。   失败次数：总次数="+test_trade_userinfo_fai+":"+test_trade_userinfo+"\r\n";
  */      
        
       
        
		if(!CacheClass.istrade)
		{
			return log=log+"外部 强行停止\r\n";
		}
        //转入资金
        
        test_in++;
        
        url="https://test1.91limao.com/PlugServlet";
		data=new PublicData();
		data.m="243";
		data.rmb="500";
		data.vrid="1";
		data.rmbtype="1";

		jsonParam=JSON.toJSONString(data);
		str=send(httpClient,url,jsonParam);
		if(CacheClass.isEmpty(str)) {
			test_in_fai++;
			log=log+"转入资金    失败。   失败次数：总次数="+test_in_fai+":"+test_in+"\r\n";
			CacheClass.istrade=false;
			log=log+"--- 自动结束  ---\r\n";
			return log;
		}
		df= JSON.parseObject(str,PublicData.class);
		str=null;
        if(CacheClass.getIntValue(df.state)==0)
        {
        	test_in_fai++;
			log=log+"转入资金    失败。"+df.info+"   失败次数：总次数="+test_in_fai+":"+test_in+"\r\n";
			CacheClass.istrade=false;
			log=log+"--- 自动结束  ---\r\n";
        	return log;
        }
        log=log+"转入资金    成功。   失败次数：总次数="+test_in_fai+":"+test_in+"\r\n";
        
        
		if(!CacheClass.istrade)
		{
			return log=log+"外部 强行停止\r\n";
		}
        //建仓
        
        test_trade_buy++;
        
        url="https://test1.91limao.com/cgi-bin/zl_cgi?c=23";
        url=url+"&goodscode=USOIL1T&direct=115&orderamount=10&ordermode=49&slpercent=10&tppercent=10";
        		
        str=send_get(httpClient,url);
        if(CacheClass.isEmpty(str)){
        	test_trade_buy_fai++;
			log=log+"建仓    失败。   失败次数：总次数="+test_trade_buy_fai+":"+test_trade_buy+"\r\n";
			CacheClass.istrade=false;
			log=log+"--- 自动结束  ---\r\n";
        	return log;
        }
		df= JSON.parseObject(str,PublicData.class);
		str=null;
        if(CacheClass.getIntValue(df.retcode)!=0)
        {
        	test_trade_buy_fai++;
        	log=log+"建仓    失败   retcode="+df.retcode+"。   失败次数：总次数="+test_trade_buy_fai+":"+test_trade_buy+"\r\n";
        	CacheClass.istrade=false;
        	log=log+"--- 自动结束  ---\r\n";
        	return log;
        }
        log=log+"建仓    成功   。   失败次数：总次数="+test_trade_buy_fai+":"+test_trade_buy+"\r\n";
        
        
		if(!CacheClass.istrade)
		{
			return log=log+"外部 强行停止\r\n";
		}
        //全平仓全出金
        
        test_out++;
        
        url="https://test1.91limao.com/PlugServlet";
		data=new PublicData();
		data.m="98989";

		jsonParam=JSON.toJSONString(data);
		str=send(httpClient,url,jsonParam);
		if(CacheClass.isEmpty(str)) {
			test_out_fai++;
			log=log+"全平仓全出金   失败。   失败次数：总次数="+test_out_fai+":"+test_out+"\r\n";
			CacheClass.istrade=false;
			log=log+"--- 自动结束  ---\r\n";
			return log;
		}
		df= JSON.parseObject(str,PublicData.class);
		str=null;
        if(CacheClass.getIntValue(df.state)==0)
        {
        	test_out_fai++;
			log=log+"全平仓全出金   失败。 "+df.info+"   失败次数：总次数="+test_out_fai+":"+test_out+"\r\n";
			CacheClass.istrade=false;
			log=log+"--- 自动结束  ---\r\n";
        	return log;
        }
        log=log+"全平仓全出金   成功。  失败次数：总次数="+test_out_fai+":"+test_out+"\r\n";
        
        
        return log;
        
	}
	
	
	private static String send(DefaultHttpClient httpClient,String url,String jsonParam)
	{
		
		HttpPost method = new HttpPost(url);
		StringEntity entity = new StringEntity(jsonParam, "utf-8");
        entity.setContentEncoding("UTF-8");
        entity.setContentType("application/json");
        method.setEntity(entity);
        
        
        method.addHeader("User-Agent", "Mozilla/4.0");
        method.addHeader("X-Requested-With", "XMLHttpRequest");
        
        
        HttpResponse result=null;
		try {
			result = httpClient.execute(method);
		} catch (ClientProtocolException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		String str = "";
        if (result!=null && result.getStatusLine().getStatusCode() == 200) {
            
            try {
                /**读取服务器返回过来的json字符串数据**/
                str = EntityUtils.toString(result.getEntity());

            } catch (Exception e) {
                System.out.println("post请求提交失败:" + url);
            }
        }
        
        return str;
	}
	
	
	private static String send_get(DefaultHttpClient httpClient,String url)
	{
		
		HttpGet method = new HttpGet(url);
/*		StringEntity entity = new StringEntity(jsonParam, "utf-8");
        entity.setContentEncoding("UTF-8");
        entity.setContentType("application/json");*/
		
        
        
        method.addHeader("User-Agent", "Mozilla/4.0");
        method.addHeader("X-Requested-With", "XMLHttpRequest");
        
        
        HttpResponse result=null;
		try {
			result = httpClient.execute(method);
		} catch (ClientProtocolException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		String str = "";
		
        if (result!=null && result.getStatusLine().getStatusCode() == 200) {
            
            try {
            	
            	
                /**读取服务器返回过来的json字符串数据**/
                str = EntityUtils.toString(result.getEntity());

            } catch (Exception e) {
                System.out.println("get请求提交失败:" + url);
            }
        }
        else
        {
        	
        	System.out.println("get请求提交失败: StatusCode=" + result.getStatusLine().getStatusCode());
        }
        
        return str;
	}

	

}
